package com.zhike.service.system;

import javax.servlet.http.HttpServletRequest;

import com.zhike.common.dto.LoginDTO;
import com.zhike.common.dto.R;
import com.zhike.common.dto.UserRegisterDTO;
import com.zhike.common.repository.FileUploadLog;
import com.zhike.common.repository.OperateLog;
import com.zhike.common.vo.LoginResponse;
import com.zhike.common.vo.UserInfo4Cache;

public interface ISystemService {

    /**
     * 用户登录IM系统
     * 
     * @return
     */
    R<LoginResponse> login(LoginDTO dto, String ip);

    /**
     * 用户注册
     * 
     * @param dto
     * @param ip
     * @return
     */
    R<Boolean> userRegister(UserRegisterDTO dto, String ip);

    /**
     * 用户注销登录
     * 
     * @return
     */
    Boolean logout(HttpServletRequest req);

    /** 获取用户的缓存数据 */
    UserInfo4Cache getUserInfo();

    UserInfo4Cache getUserInfo(String uId);

    /**
     * 手机验证码校验
     * 
     * @param phone
     * @param code
     * @return
     */
    Boolean checkPhoneCode(String phone, String code);

    /**
     * 获取手机验证码
     * 
     * @param phone
     * @return
     */
    R<String> getPhoneCode(String phone, String modelKey);

    /**
     * 更新用户登录信息
     * 
     * @param ip
     * @param uid
     * @return
     */
    void updateUserLoginInfo(String ip, String uid);

    /**
     * 异步保存日志
     */
    void syncSaveOprateLog(OperateLog log);

    /**
     * 异步保存文件上传日志
     * 
     * @param oprLog
     */
    void syncSaveFileUploadLog(FileUploadLog oprLog);
}
